package com.gzsxy.esjy.message.channel;

import io.netty.channel.Channel;
import io.netty.channel.group.ChannelGroup;
import io.netty.util.AttributeKey;

/**
 * 通道管理
 * @author zhangxiaolong
 *
 */
public interface ChannelManager {

	public final static AttributeKey<String> IP = AttributeKey.newInstance("IP") ;
	/**
	 * 获取主题通道
	 * @param topic
	 * @return
	 */
	public ChannelGroup getChannel(String topic) ;
	
	/**
	 * 新增通道
	 * @param topic 主题
	 * @param channel 通道
	 */
	public void addChannel(String topic,Channel channel) ;
	
	/**
	 * 移除通道
	 * @param channel 通道
	 */
	public void remove(Channel channel) ;
	
	/**
	 * 移除通道主题
	 * @param topic 主题
	 * @param channel 通道
	 */
	public void remove(String topic,Channel channel) ;
	
	/**
	 * 绑定关闭事件
	 * @param channel
	 */
	public void closeEvent(Channel channel) ;
}
